home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
gnu
/
emacs
/
emacs1855
/
emacs1855
< prev
next >
Wrap
Text File
|
1994-08-27
|
4KB
|
117 lines
Emacs 18.55
-rw-rw-r-- 1 gray 1416303 Sep 25 15:15 ++jrb_emacs_src.zoo
-rw-rw-r-- 1 gray 142836 Jul 14 1990 temacs.lzh
-rw-rw-r-- 1 gray 249642 Jul 14 1990 xemacs.lzh
********
./lisp/README
********
if you are going to use Gulam as your callout shell, use gshell.el
instead of shell.el
********
./README
********
Emacs 18.55 tos version
to re-compile:
make library:
in lib/ adjust VPATH to point to the gcc-lib-sources
then hit make. this will pick up files it does'nt find
from that library. Make sure to also adjust the include
paths "-I<dirs>" correctly, so that files in h/ are
found before files in the gcc-tos-lib-include directory.
(in lib i have provided gnu.olb and crt0.o, so you can
avoid this step and just use those).
make emacs:
adjust paths in xmakefile so that include files are first
found in h/ and then the gcc-lib-include-files. also
the library you created above should be linked, and not
the standard tos-gcc-libs. hit make -f xmakefile
and it will create `temacs'.
READ the file read_me before proceeding. set up your environment.
test:
test out temacs by
temacs -l loadup.el
dumping:
see the file lisp/dumping.txt
if you are using gulam:
temacs -batch -l loadup.el -dump
mv xemacs xemacs.1
then start a subshell by executing another copy of gulam
within gulam.
before you make the second dump issue
unsetenv ARGV
temacs -batch -l loadup.el -dump
mv xeacs xemacs.2
now exit the sub-shell (logout will do it)
dumpfix xemacs.2 xemacs.1 xemacs
> answer any questions here
this will result in the undumped emacs called xemacs
i usually use the following alias to run it:
alias emacs 'g:\usr\lib\gnuemacs\bin\xemacs -q -l /dev/G/emacs.rc'
as for some strange reason it does'nt find the init file even if
setenv HOME /dev/G
(oh, and i usually keep emacs.rc byte-compiled, so it load faster).
if you are using gulam as a shell for (M-x shell), then use gshell.el
instead of shell.el in the lisp directory (you may want to fixup your
loadup.el to make this adjustment)
enjoy,
--
bang: {any internet host}!dsrgsun.ces.CWRU.edu!bammi jwahar r. bammi
domain: bammi@dsrgsun.ces.CWRU.edu
GEnie: J.Bammi
--
dumping guidelines:
Some notes on dumpfix:
First some theory. When i core dump two emacs versions started at different
points in memory, they should be identical in all places except the absolute
pointers. These pointers should have the same difference for any corresponding
locations (the difference of the two basepage addresses). To relocate these
pointers i need the addresses of the basepages. In an emacs dump file i include
these addresses in an unused field of the file header. Now i can scan the two
files to find all longs with difference = basediff (= basepage1 - basepage2).
To relocate them i subtract the basepage address of the file, write the value
back and note the byte for the reloc info.
Other differences than the basediff can occur when we have eg. time-values
at the actual position or if we are looking at the long two bytes before a
value to be relocated. Here is a picture to illustrate this:
+--+--+ +--+--+ +--+--+ +--+--+
| a | | b | | c | | d |
+--+--+ +--+--+ +--+--+ +--+--+
If the variable to relocate is the long consisting of word b & c, the difference
of longs a & b and c & d in the two files will have a wrong value.
Now practical: the occuring differences in emacs have not only the exact value
basediff, but also basediff +- some offset (maybe caused by rounding effects).
Also there are values which i can't (yet) explain. In all these cases the
dumpfix program says "unexpected difference ...".
If i relocate only the places where the difference has exactly the value
basediff, then emacs will crash. So i introduced the FUZZY-factor. If the
offset is not more than FUZZY bytes, i am relocating the location too. This
gives fewer problems, but we still have unexpected values.
What i am doing now is to look wether these values may be pointers to be
relocated. They have to meet several constraints:
- the value must be even
- the tag byte (the highest byte of the long is used as a flag in
emacs) has to be between 0 and 21 (the biggest flag used by emacs)
- the value resulting from stripping the tag-byte should point into
the programs text or data or bss (including malloced part) section
If i have these three cases together then the user is asked (it may still be
an ascii string).
- Edgar